package com.client.service.data;

import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.shared.model.Apporteur;
import com.shared.model.Assure;
import com.shared.model.Interlocuteur;
import com.shared.model.Produit;
import com.shared.model.Proposition;

public interface AssureDataServiceAsync {

	void getList(AsyncCallback<List> callback) throws IllegalArgumentException;

	void save(Assure assure, AsyncCallback<Assure> callback) throws IllegalArgumentException;

	void update(Assure assure, AsyncCallback<Assure> callback) throws IllegalArgumentException;

	void delete(Assure assure, AsyncCallback<Assure> callback) throws IllegalArgumentException;

	void getListProposition(Assure assure, AsyncCallback<List> callback);

	void getApporteur(Assure assure, AsyncCallback<Apporteur> callback);

	void getSousApporteur(Assure assure, AsyncCallback<Apporteur> callback);

	void getGestionnaire(Assure assure, AsyncCallback<Interlocuteur> callback);

	void setApporteur(Assure assure, Apporteur apporteur,
			AsyncCallback<String> callback);

	void setSousApporteur(Assure assure, Apporteur apporteur,
			AsyncCallback<String> callback);

	void setGestionnaire(Assure assure, Interlocuteur interlocuteur,
			AsyncCallback<String> callback);

	void addProposition(Assure assure, Proposition proposition,
			AsyncCallback<String> callback);

	void removeProposition(Assure assure, Proposition proposition,
			AsyncCallback<String> callback);

	void removeApporteur(Assure assure, Apporteur apporteur,
			AsyncCallback<String> callback);

	void removeApporteurSousApporteur(Assure assure, Apporteur apporteur,
			AsyncCallback<String> callback);

	void removeApporteurGestionnaire(Assure assure,
			Interlocuteur interlocuteur, AsyncCallback<String> callback);

	void getProduitPropose(Assure assure,Proposition proposition,
			AsyncCallback<Produit> callback);

	void acceptProposition(Assure assure, Proposition proposition,
			AsyncCallback<String> callback);

	void getAssure(long key, AsyncCallback<Assure> callback);
	
}
